//A01人员表 是最主要的表格
//A02 职务表 暂时只是用来通过单位反查人员使用
// A08 学历学位 相关的信息 但最主要的学历学位信息已经存在A01表里了，主要是统计分析时使用
// A36 社会关系表 存亲属用的
//B01 组织机构表

//每个表对应一个XX_Dal.js 文件，有查库的方法。从这里查到的数据 是数据项的array，可以JSON.stringify()生成json。
//数据的key已经可读话 不再是原始数据表项的名字
// dal.js是隔离层，隔离读写数据库的直接操作。  simpleWebSql.js直接操作数据库
//util.js文件 提供一些辅助类和表结构的说明
// 收藏夹功能用这个 SelectPersionSimpleInfoByIDCardNO
class util {
	constructor() {
		this.init();
	};

	init() {

	};


	/**
	 * @param arr 需要去重的数组
	 */
	unique(arr) {
		let array = [];
		arr.forEach(function (elem) {
			if (this.indexOf(elem) === -1) {
				this.push(elem);
			}
		}, array);
		return array;
	}

	age(age) {
		if (!age) {
			return '';
		}
		let returnAge;
		let birthYear = age.substring(0, 4),
			birthMonth = age.substring(4, 6);

		let d = new Date();
		var nowYear = d.getFullYear();
		var nowMonth = d.getMonth() + 1;

		if (nowYear === birthYear) {
			returnAge = 0;  //同年 则为0岁
		} else {
			var ageDiff = nowYear - birthYear; //年之差
			if (ageDiff > 0) {
				var monthDiff = nowMonth - birthMonth;//月之差
				if (monthDiff < 0) {
					returnAge = ageDiff - 1;
				} else {
					returnAge = ageDiff;
				}
			} else {
				returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天
			}
		}

		return returnAge;//返回周岁年龄
	}


	/**
	 * 
	 * @param {*} age 年龄 40 30之类的
	 */
	getBrithDayString(age) {
		let d = new Date();
		var nowYear = d.getFullYear();
		//console.log('nowYear '+nowYear)
		let birthYear = nowYear - age
		//console.log('birthYear '+birthYear)
		var nowMonth = d.getMonth() + 1;

		var nowDate = d.getDate();
		//console.log(nowDate)
		if (nowMonth < 10) {
			nowMonth = '0' + nowMonth
		}

		if (nowDate < 10) {
			nowDate = '0' + nowDate
		}
		var brithDayString = birthYear + '' + nowMonth + '' + nowDate;
		return brithDayString;

	}

		//吧传过来的人员数据按职务职级和单位重要性排序
	//职务、职级权重优先，相同的按工作单位，之后再按年龄
	sortByLeaderLeavelAndOrg(simplePersonInfoArray){
		//LeaderLevelText  JobLevelTitleText
		//
		//Birthday
	}
//#region 各种对照表
	//这个是canread的标准
	A01Dictionary = {
		'A0000': 'PersionID', //人员ID
		'A0101': 'PersionName', //姓名
		'A0104': 'Sex', //男女
		'A0107': 'Birthday', //生日
		'A0111A': 'NativePlace', //籍贯
		'A0114A': 'BirthPlace', //出生地
		'A0117': 'EthnicEText', //GB3304 民族 这里有个列表，需要查询！！！！！！
		'A0128': 'HealthCondition', //健康状况 是文字
		'A0134': 'StartingWorkDate', //参加工作时间 可能是19800629 或者198006 这两种格式，要规格化
		'A0140': 'JoinPartyTime', //用在任免表 入党时间 如果是群众 就填写文字“群众” 如果是有第三党派 则 写“民革、民盟(1990.01)”之类
		'A0141': 'PoliticsStatusText', // GB4762政治面貌的编号。显示里用不到，但查询中可以用到 这个跟第三党派有关 本条记录民革民盟照样可以是中共党员！！！！！！！！！！！！！
		'A3921': 'SecondPartisanText', //GB4762第二党派ID 比如4代表民革!!!!!!!
		'A3927': 'ThirdPartisanText', //GB4762第三党派ID 比如4代表民盟!!!!!!!!
		'A0160': 'PersionTypeText', //ZB125 人员类别 1代表公务员 有一个下拉列表!!!!!!!!!!!!
		'A0163': 'PersionStatusText', //人员管理状态 没用  非现职人员 现职人员 没用
		'A0165': 'ManageTypeText', //ZB130 管理类别 1代表中央管理的干部 2代表省级党委管理干部
		'A0184': 'IDCardNO', //身份证号
		'A0187A': 'Specialty', //熟悉专业有何特长
		'A0192': 'JobTitleShortly', //现任职务 现工作单位及职务简称
		'A0192A': 'JobTitleDetail', //现任职务 现工作单位及职务全称 干部任免表里的现任职务写的就是这个
		'A0123': 'JobTypeText', //XZ93 应该是职位类别 代表综合管理类
		'A0221': 'LeaderLevelText', // ZB09 现职务层次 这个查询需要  文本 
		'A0288': 'LeaderLevelTime', //任现职务层次时间
		'A0192E': 'JobLevelTitleText', //ZB148 应该是现任职级的文本
		'A0192C': 'JobLevelTime', //任现职级时间
		'A0196': 'SkillTitle', //专业技术职务 “高级工程师”  这个任免表要用到 
		'A1701': 'Resume', //简历
		'A14Z101': 'RewardsAndPunishment', //我猜测应该是奖惩情况 对应的excel里叫“奖惩综述”
		'A15Z101': 'AnnualAssessment', //年度考核结果 年度考核结果综述
		'A0120': 'RankText', //ZB134级别 是编号！！！！！！ 
		'A0121': 'StaffingTypeText', //ZB135 编制类型 是编号
		'A0122': 'ProfessionalLevelText',//ZB139 猜测是专业技术类公务员任职资格 
		'Y0001': 'HighestFulltimeAcademicQualification',//最高全日制学历
		'Y0002': 'HighestFulltimeDegreeLevel',//最高全日制学位
		'Y0003': 'FulltimeSchoolAndMajor',//全日制学校及专业
		'Y0004': 'HighestInServiceAcademicQualification',//最高在职学历
		'Y0005': 'HighestInServiceDegreeLevel',//最高在职学位
		'Y0006': 'InServiceSchoolAndMajor',//在职学校及专业
		'ZZXL':'ZZXL',//最高在职学历
		'ZZXLXX':'ZZXLXX',//院校系专业（最高在职学历
		'ZZXW':'ZZXW',//最高在职学位
		'ZZXWXX':'ZZXWXX',//院校系专业（最高在职学位）
		'QRZXL':'QRZXL',//最高全日制学历
		'QRZXLXX':'QRZXLXX',//院校系专业（最高全日制学历）
		'QRZXW':'QRZXW',//最高全日制学位
		'QRZXWXX':'QRZXWXX',//院校系专业（最高全日制学位）
		'a0192x': 'OverallLevelTime',//任相当层次职务职级时间
		'TORGID':'TORGID', //最高机构
		'TORDER':'TORDER'//最高机构所在机体内排序

	};

	A08Dictionary = {
		'A0814': 'School',  //  学校
		'A0824': 'Major',  //    专业 记住输出的时候如果字段本身没有带专业则添加“专业”两个字
		'A0801A': 'AcademicQualification',  //学历
		//'A0801B':'AcademicQualificationCode',  //学历编码

		'A0901A': 'Degree',  //学位
		//'A0901B':'DegreeCode',  //学位编码


		'A0837': 'EducationType',  //  1代表全日制 2代表在职

		'A0831': 'isHighestFulltimeAcademicQualification',  //  最高全日制学历  最高在职学历 1代表true 0或null代表false
		'A0832': 'isHighestFulltimeDegreeLevel',  //  最高全日制学位 最高在职学历 1代表true 0或null代表false

		'A0838': 'isHighestInServiceAcademicQualification',  // 最高在职学历 1代表true 0或null代表false
		'A0839': 'isHighestInServiceDegreeLevel',  // 最高在职学位 最高在职学历 1代表true 0或null代表false

		'A0834': 'isHighestAcademicQualification',  // 最高学历 1代表true 0代表false
		'A0835': 'isHighestDegreeLevel',  // 最高学位（自动生成）1代表true 0代表false

		'A0899': 'shouldInAppointmentFile',//任免表输出.最高学历的标识。true—是；false—否。			
	}





	//家属数据库预处理应该放到最后,等全部人员信息录入完成后才能做CadreID的比对
	//的人员输入和IsInResumeFile为false
	A36Dictionary = {
		'A0000': 'SourcePersionID', //源头干部的系统内部ID
		'A3601': 'PersionName', //家属姓名
		'A3604A': 'Relation', //关系
		'A3607': 'Birthday', //家属生日
		'A3627': 'PoliticsStatus', //家属政治面貌 文字
		'A3611': 'JobInfo', //家属工作信息
		'SORTID': 'Sort', //任免表中的排序
		'CadreID': 'PersionID', //如果家属本人是公务员的话，则预处理并读取其内部ID
		'IsInResumeFile': 'IsInResumeFile', //是否应出现在任免表
		'X0001': '', //预处理的姓名拼音全称 zhangsan
		'X0002': '', //预处理的姓名拼音简称 zs
		'X0003': '',
		'X0004': ''
	}


	B01Dictionary = {
		'b0101': 'OrgFullName', //机构全程
		'B0104': 'OrgShortName', //机构简称
		'B0114': 'OrgCode', //机构编码
		'B0111': 'OrgID', //机构内部ID
		'B0121': 'SuperiorOrgID', //上级机构ID
		'SORTID': 'SORTID', //同级别内的排序
		'X0001': '', //全称的拼音
		'X0002': '', //全称的拼音简写
		'X0003': '', //简称的拼音
		'X0004': '' //简称的拼音简写
	}



	A02Dictionary = {
		'A0000': 'PersionID', //源头干部的系统内部ID
		'A0201A':'OrgName',
		'A0201B':'OrgID',
		'A0201E':'isChief',//正职 副职 其他 可能为空字符串
		'A0219':'isLeader', //领导职务 0
		'A0225': 'SortIDInOrg'//集体内排序
	}

	A99z1Dictionary = {
		'A0000': 'PersionID', //源头干部的系统内部ID
		'a99z195': 'telNO'
	}

	leaderTypeValue = {
		"厅局级正职": 1,
		'一级巡视员': 2,
		'厅局级副职': 3,

		'二级巡视员': 4,
		'一级总监': 4,
		'总督': 4,

		'一级调研员': 5,
		'二级总监': 5,
		'一级高级主办': 5,
		'一级高级警长': 5,
		'一级高级法官': 5,
		'一级高级检察官': 5,
		'督办': 5,

		'县处级正职': 6,
		'五级职员': 6,

		'二级调研员': 7,
		'一级高级主管': 7,
		'二级高级主办': 7,
		'二级高级警长': 7,
		'警务技术二级主任': 7,
		'二级高级法官': 7,
		'二级高级检察官': 7,

		'三级调研员': 8,
		'二级高级主管': 8,
		'三级高级主办': 8,
		'三级高级警长': 8,
		'警务技术三级主任': 8,
		'三级高级法官': 8,
		'三级高级检察官': 8,

		'县处级副职': 9,
		'六级职员': 9,

		'四级调研员': 10,
		'三级高级主管': 10,
		'四级高级主办': 10,
		'四级高级警长': 10,
		'警务技术四级主任': 10,
		'四级高级法官': 10,
		'四级高级检察官': 10,

		'一级主任科员': 11,
		'四级高级主管': 11,
		'一级主办': 11,
		'一级警长': 11,
		'一级法官助理': 11,
		'一级检察官助理': 11,

		'乡科级正职': 12,
		'七级职员': 12,
		'二级主任科员': 12,
		'一级主管': 12,
		'二级主办': 12,
		'二级法官助理': 12,
		'二级检察官助理': 12,

		'三级主任科员': 13,
		'二级主管': 13,
		'三级主办': 13,
		'三级检察官助理': 13,

		'乡科级副职': 14,

		'四级主任科员': 15,
		'三级主管': 15,
		'四级主办': 15,

	}

	orgTypeValue = {
		//党委 人大 政府 政协
	}

	//crypto
//#endregion


}

export default util;